package entidades;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author lzielinski
 */
public class Empleados extends Persona {

    // Atributos
    private int id;
    private String cargo;
    private String legajo;

    // Constructores
    public Empleados() {
    }

    public Empleados(String apellido, String nombre, String dni, String cargo, String legajo) {
        super(apellido, nombre, dni);
        setCargo(cargo);
        setLegajo(legajo);
    }

    // metodo to string
    public String toString() {
        return getApellido() + "  " + getNombre();
    }

    // Metodos
    public static ArrayList obtenerTodos(Connection conn) throws Exception {
        // Arma la consulta y la ejecuta
        String laConsulta = "SELECT * FROM carnet where flag_borrado = 0";
        Statement stmtConsulta = conn.createStatement();
        ResultSet rs = stmtConsulta.executeQuery(laConsulta);

        // Informa la insercion a realizar
        System.out.println(">>SQL: " + laConsulta);

        // Construye la coleccion de personas
        ArrayList empleados = new ArrayList();

        // Muestra los datos
        while (rs.next()) {
            // Arma el objeto empleado con los datos de la consulta
            Empleados e = new Empleados();
            e.setId(rs.getInt("id"));
            e.setApellido(rs.getString("apellido"));
            e.setNombre(rs.getString("nombre"));
            e.setDni(rs.getString("dni"));
            e.setLegajo(rs.getString("legajo"));
            e.setCargo(rs.getString("cargo"));

            // Agrega la persona a la coleccion
            empleados.add(e);
        }

        // Cierra el Statement
        stmtConsulta.close();

        // Retorna la coleccion
        return empleados;
    }

    public void insertar(Connection conn) throws Exception {
        // Arma la sentencia de inserción
        String laInsercion = "INSERT INTO carnet (apellido, nombre, dni, legajo, cargo) "
                + "VALUES ('" + getApellido() + "', '" + getNombre() + "', '" + getDni()
                + "', '" + getLegajo() + "', '" + getCargo() + "')";

        // Informa la insercion a realizar
        System.out.println(">>SQL: " + laInsercion);

        // Ejecuta la insercion
        Statement stmtInsercion = conn.createStatement();
        stmtInsercion.execute(laInsercion);

        // Cierra el Statement
        stmtInsercion.close();
    }

    public void actualizar(Connection conn) throws Exception {
        // Arma la sentencia de actualizacion
        String laActualizacion = "UPDATE carnet "
                + "SET apellido = '" + getApellido() + "', nombre = '" + getNombre() + "', "
                + "dni = " + getDni() + ", " + "legajo = '" + getLegajo() + "', "
                + "cargo = '" + getCargo() + "' "
                + "WHERE id = " + getId();

        // Informa la actualizacion a realizar
        System.out.println(">>SQL: " + laActualizacion);

        // Ejecuta la actualizacion
        Statement stmtActualizacion = conn.createStatement();
        stmtActualizacion.execute(laActualizacion);

        // Cierra el Statement
        stmtActualizacion.close();
    }

    public void eliminar(Connection conn) throws Exception {
        // Arma la sentencia de eliminacion
        String laEliminacion = "DELETE FROM carnet WHERE id = " + getId();
        String laEliminacion2 = "UPDATE carnet SET flag_borrado = 1 WHERE id = " + getId();

        // Informa la eliminacion a realizar
        System.out.println(">>SQL: " + laEliminacion2);

        // Ejecuta la eliminacion
        Statement stmtEliminacion = conn.createStatement();
        stmtEliminacion.execute(laEliminacion2);

        // Cierra el Statement
        stmtEliminacion.close();
    }

    // Getters and Setters
    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public String getLegajo() {
        return legajo;
    }

    public void setLegajo(String legajo) {
        this.legajo = legajo;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
